home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / ElementIterator.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  3.6 KB  |  144 lines

  1. package javax.swing.text;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Stack;
  5.  
  6. public class ElementIterator implements Cloneable {
  7.    private Element root;
  8.    private Stack elementStack = null;
  9.  
  10.    public ElementIterator(Document var1) {
  11.       this.root = var1.getDefaultRootElement();
  12.    }
  13.  
  14.    public ElementIterator(Element var1) {
  15.       this.root = var1;
  16.    }
  17.  
  18.    public synchronized Object clone() {
  19.       try {
  20.          ElementIterator var1 = new ElementIterator(this.root);
  21.          var1.elementStack = new Stack();
  22.  
  23.          for(int var2 = 0; var2 < this.elementStack.size(); ++var2) {
  24.             StackItem var3 = (StackItem)this.elementStack.elementAt(var2);
  25.             StackItem var4 = (StackItem)var3.clone();
  26.             var1.elementStack.push(var4);
  27.          }
  28.  
  29.          return var1;
  30.       } catch (CloneNotSupportedException var5) {
  31.          throw new InternalError();
  32.       }
  33.    }
  34.  
  35.    public Element current() {
  36.       if (this.elementStack == null) {
  37.          return this.first();
  38.       } else if (!this.elementStack.empty()) {
  39.          StackItem var1 = (StackItem)this.elementStack.peek();
  40.          Element var2 = javax.swing.text.ElementIterator.StackItem.access$0(var1);
  41.          int var3 = javax.swing.text.ElementIterator.StackItem.access$1(var1);
  42.          return var3 == -1 ? var2 : var2.getElement(var3);
  43.       } else {
  44.          return null;
  45.       }
  46.    }
  47.  
  48.    public int depth() {
  49.       return this.elementStack.size();
  50.    }
  51.  
  52.    private void dumpTree() {
  53.       Element var1;
  54.       while((var1 = this.next()) != null) {
  55.          System.out.println("elem: " + var1.getName());
  56.          AttributeSet var2 = var1.getAttributes();
  57.          String var3 = "";
  58.          Enumeration var4 = var2.getAttributeNames();
  59.  
  60.          while(var4.hasMoreElements()) {
  61.             Object var5 = var4.nextElement();
  62.             Object var6 = var2.getAttribute(var5);
  63.             if (var6 instanceof AttributeSet) {
  64.                var3 = var3 + var5 + "=**AttributeSet** ";
  65.             } else {
  66.                var3 = var3 + var5 + "=" + var6 + " ";
  67.             }
  68.          }
  69.  
  70.          System.out.println("attributes: " + var3);
  71.       }
  72.  
  73.    }
  74.  
  75.    public Element first() {
  76.       if (this.root == null) {
  77.          return null;
  78.       } else {
  79.          this.elementStack = new Stack();
  80.          if (this.root.getElementCount() != 0) {
  81.             this.elementStack.push(new StackItem(this, (1)null, this.root));
  82.          }
  83.  
  84.          return this.root;
  85.       }
  86.    }
  87.  
  88.    public Element next() {
  89.       if (this.elementStack == null) {
  90.          return this.first();
  91.       } else if (this.elementStack.isEmpty()) {
  92.          return null;
  93.       } else {
  94.          StackItem var1 = (StackItem)this.elementStack.peek();
  95.          Element var2 = javax.swing.text.ElementIterator.StackItem.access$0(var1);
  96.          int var3 = javax.swing.text.ElementIterator.StackItem.access$1(var1);
  97.          if (var3 + 1 < var2.getElementCount()) {
  98.             Element var5 = var2.getElement(var3 + 1);
  99.             if (var5.isLeaf()) {
  100.                javax.swing.text.ElementIterator.StackItem.access$2(var1);
  101.             } else {
  102.                this.elementStack.push(new StackItem(this, (1)null, var5));
  103.             }
  104.  
  105.             return var5;
  106.          } else {
  107.             this.elementStack.pop();
  108.             if (!this.elementStack.isEmpty()) {
  109.                StackItem var4 = (StackItem)this.elementStack.peek();
  110.                javax.swing.text.ElementIterator.StackItem.access$2(var4);
  111.                return this.next();
  112.             } else {
  113.                return null;
  114.             }
  115.          }
  116.       }
  117.    }
  118.  
  119.    public Element previous() {
  120.       if (this.elementStack == null | this.elementStack.size() == 1) {
  121.          return null;
  122.       } else {
  123.          StackItem var1 = (StackItem)this.elementStack.peek();
  124.          Element var2 = javax.swing.text.ElementIterator.StackItem.access$0(var1);
  125.          int var3 = javax.swing.text.ElementIterator.StackItem.access$1(var1);
  126.          if (var3 > 0) {
  127.             --var3;
  128.             return var2.getElement(var3);
  129.          } else if (var3 == 0) {
  130.             return var2;
  131.          } else if (var3 == -1) {
  132.             Object var4 = this.elementStack.pop();
  133.             var1 = (StackItem)this.elementStack.peek();
  134.             this.elementStack.push(var4);
  135.             var2 = javax.swing.text.ElementIterator.StackItem.access$0(var1);
  136.             var3 = javax.swing.text.ElementIterator.StackItem.access$1(var1);
  137.             return var3 == -1 ? var2 : var2.getElement(var3);
  138.          } else {
  139.             return null;
  140.          }
  141.       }
  142.    }
  143. }
  144.